Skip to content

Comments

feat: replace 'No calendars found' with 'Request Access to Calendar' button in onboarding#4171

Merged
yujonglee merged 2 commits intomainfrom
devin/1771813643-calendar-request-access-button
Feb 23, 2026
Merged

feat: replace 'No calendars found' with 'Request Access to Calendar' button in onboarding#4171
yujonglee merged 2 commits intomainfrom
devin/1771813643-calendar-request-access-button

Conversation

@devin-ai-integration
Copy link
Contributor

Summary

In the onboarding Calendar tab, when the user hasn't granted calendar permission yet, the app previously showed an empty CalendarSelection with "No calendars found." This replaces that empty state with a dedicated "Request Access to Calendar" button.

  • Adds RequestCalendarAccess component with a calendar icon and outline button
  • Checks usePermission("calendar") status in CalendarSection
  • Only renders the calendar list (AppleCalendarList) when permission is authorized; otherwise renders the request button

Review & Testing Checklist for Human

  • UX: Redundant permission UI?ApplePermissions (the red "Calendar" row with arrow button) is still rendered above the new RequestCalendarAccess button. Both trigger calendar.request. Verify this is the intended design, or if ApplePermissions should be hidden/simplified when not yet authorized.
  • Test on macOS: Click "Request Access to Calendar" → system permission dialog appears → grant access → calendar list loads in place of the button.
  • Test deny flow: Deny calendar permission → verify the request button remains visible and functional (re-requesting or opening settings).

Notes

  • The generic CalendarSelection "No calendars found" empty state is unchanged — it just won't be reachable during onboarding anymore since we gate on permission status first.
  • usePermission("calendar") is called unconditionally in CalendarSection even on non-macOS, but the result is only used inside the isMacos branch, so no functional impact.

Requested by: @goranmoomin
Link to Devin run

…button in onboarding

Co-Authored-By: Sungbin Jo <goranmoomin@daum.net>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@netlify
Copy link

netlify bot commented Feb 23, 2026

Deploy Preview for hyprnote-storybook canceled.

Name Link
🔨 Latest commit 826cfbe
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/699bbcd20337bb00083043a3

@netlify
Copy link

netlify bot commented Feb 23, 2026

Deploy Preview for hyprnote canceled.

Name Link
🔨 Latest commit 826cfbe
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/699bbcd232f04d0008de279b

Co-Authored-By: Sungbin Jo <goranmoomin@daum.net>
@yujonglee yujonglee merged commit cfdc5b4 into main Feb 23, 2026
14 checks passed
@yujonglee yujonglee deleted the devin/1771813643-calendar-request-access-button branch February 23, 2026 10:03
Copy link
Contributor Author

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

View 1 additional finding in Devin Review.

Open in Devin Review

Comment on lines 55 to 68
<div className="flex flex-col gap-4">
<ApplePermissions />

<SyncProvider>
<AppleCalendarList />
</SyncProvider>
{isAuthorized ? (
<SyncProvider>
<AppleCalendarList />
</SyncProvider>
) : (
<RequestCalendarAccess
onRequest={calendar.request}
isPending={calendar.isPending}
/>
)}
</div>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 Duplicate permission request UI when calendar is not authorized

When isAuthorized is false, both ApplePermissions (line 56) and RequestCalendarAccess (lines 62-65) are rendered simultaneously. ApplePermissions (apps/desktop/src/components/main/body/calendar/apple/permission.tsx:10-25) already renders an AccessPermissionRow with a request button for calendar permission. The new RequestCalendarAccess component adds a second, separate "Request Access to Calendar" button in the area where the calendar list would normally appear.

This means the user sees two different ways to request calendar access at the same time. Compare with apps/desktop/src/components/main/body/calendar/sidebar.tsx:62-93 where the permission row and the calendar list are shown conditionally — the permission row is hidden once authorized, and the calendar list replaces it. The onboarding flow doesn't follow this same pattern.

This may be intentional (permission row for status/troubleshooting, button as a clear CTA), but it's worth confirming the design intent.

(Refers to lines 54-68)

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants